package com.kurtphpr.sistema.cliente;

import java.util.Date;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;

@ManagedBean(name="clienteBean")
@RequestScoped //requestScoped, por que só vai enviar o formulário, nada além disso
public class ClienteBean {
	
	private Cliente clienteSelecionado = new Cliente();
	
	//VARIÁVEL LISTA QUE VAI TRAZER UMA LISTA DE CLIENTES
	private List<Cliente> lista = null;
	
	
	/*
	 * MÉTODOS
	 */
	public void salvar(){
		ClienteRN clienteRN = new ClienteRN();
		clienteSelecionado.setDataCadastro(new Date());
		if(this.clienteSelecionado.getId() != null && this.clienteSelecionado.getId() != 0){
			clienteRN.alterar(this.clienteSelecionado);
			mensagemSucesso("Cliente alterado com sucesso");
		}else {
			clienteRN.salvar(clienteSelecionado);
			mensagemSucesso("Cliente cadastrado com sucesso");
		}
		//ESTE MÉTODO FOI EU QUE INSERI AQUI
		novo();
		this.lista = null;
	}
	
	//PARA INFORMAR UMA MENSAGEM AO USUARIO, INFORMAÇÃO AO USUÁRIO
	public void mensagemSucesso(String mensagem){
		FacesMessage faces = new FacesMessage(mensagem);
		FacesContext contexto = FacesContext.getCurrentInstance();
		contexto.addMessage(null, faces);
	}
	
	public void excluir(){
		ClienteRN clienteRN = new ClienteRN();
		clienteRN.excluir(this.clienteSelecionado);
		this.lista = null;
	}
	
	/*
	 * ESTE MÉDOTO LIMPA OS CAMPOS DO CADASTRO
	 */
	public void novo(){
		this.clienteSelecionado = new Cliente();
	}
	
	/*
	 * GETTERS AND SETTERS
	 */
	public Cliente getClienteSelecionado() {
		return clienteSelecionado;
	}

	public void setClienteSelecionado(Cliente clienteSelecionado) {
		this.clienteSelecionado = clienteSelecionado;
	}
	
	public List<Cliente> getLista() {
		ClienteRN clienteRN = new ClienteRN();
		//AQUI VERIFICA SE A LISTA ESTÁ VAZIA
		if(lista == null){
			lista = clienteRN.listar();
		}
		
		return lista;
	}
}
